package main

import (
	"fmt"
)

func main() {
	cat := &Cat{}
	// cat.Animal.Age = 3 简化如下
	cat.Age = 3
	cat.Weight = 3.14
	cat.Shout()
	cat.ShowInfo()
	cat.scratch()

	cat.int = 10
	fmt.Println(*cat)

	cat2 := Cat{Animal{18, 3.14}, 1, A{1}}
	fmt.Println(cat2)

}

type Animal struct {
	Age int
	Weight float32
}

func (a *Animal) Shout() {
	fmt.Println("叫")
}

func (a *Animal) ShowInfo() {
	fmt.Printf("年龄：%v, 体重： %v \n", a.Age, a.Weight)
}

type Cat struct {
	Animal	// 匿名结构体,可以获取匿名结构体里的所有变量和方法, 可以引入多个匿名结构体，但不推
	// 可以引入基本数据类型
	int
	// 组合模式
	a A
}

type A struct {
	a int
}

func (c *Cat) scratch() {
	fmt.Println("hajimi")
}